package com.atguigu.rabbitmq.five;

import com.atguigu.rabbitmq.util.RabbitMqUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

/**
 *
 * 消息接收
 */
public class ReceiveLogs02 {


    // 交换机的名称
    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws Exception {
        // 创建信道
        Channel channel = RabbitMqUtils.getChannel();

        // 声明一个交换机
        channel.exchangeDeclare(EXCHANGE_NAME, "fanout");

        // 声明一个队列 临时队列
        /**
         * 生成一个临时队列 队列的名称是随机的
         * 当消费者断开与队列的连接的时候 队列就自动删除
         */
        String queueName = channel.queueDeclare().getQueue();

        /**
         * 绑定交换机与队列
         */
        channel.queueBind(queueName , EXCHANGE_NAME , "");

        System.out.println("ReceiveLogs02等待接受消息，吧接受到的消息打印到屏幕上。。。。");

        // 接受消息
        DeliverCallback deliverCallback = (consumerTag,message) -> {
            System.out.println("ReceiveLogs02控制台打印接受到消息："+new String(message.getBody(),"UTF-8"));
        };

        // 消费者消费消息时的回调
        channel.basicConsume(queueName,true,deliverCallback, consumerTag->{} );

    }
}
